import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

/// 数据库工具类
class DbUtils {
  // 1. 全局定义 database 变量（Future<Database> 类型，因为初始化是异步的）
  static late Future<Database> database; // 使用 late 延迟初始化（避免直接赋值为 null）

  // 2. 初始化数据库的方法（需在 app 启动时调用，如 main 函数中）
  static Future<void> initDatabase() async {
    // 必须先确保 Flutter  Widgets 绑定（避免跨平台初始化错误）
    WidgetsFlutterBinding.ensureInitialized();

    final dbPath = join(await getDatabasesPath(), 'dhxs.db');
    if (kDebugMode) {
      debugPrint('Full database path: $dbPath');
    }
    // 初始化 database 变量（核心：通过 openDatabase 打开/创建数据库）
    database = openDatabase(
      // 数据库路径：结合系统路径 + 自定义数据库名（确保跨平台兼容）
      dbPath,
      // 数据库首次创建时，执行建表语句
      onCreate: (db, version) {
        db.execute(
          'create table artwork(id integer primary key,data text,date_time int)',
        );
        db.execute(
          'create table palette(id integer primary key,name text,data text,date_time int)',
        );
        return db.execute(
          'create table setting(id integer primary key,`key` text,`value` text)',
        );
      },
      onUpgrade: (db, oldVersion, newVersion) {

      },
      // 数据库版本（用于升级/降级，首次使用设为 1 即可）
      version: 1,
    );
  }
}
